The manner in which software accepts input and returns output is often referred to as an Application Programming Interface (API) of that software. An API may be used to invoke the functions of that software, for example, by other programs. The C++ Standard Template Library is an example of an API that permits users to write applications that take advantage of many common functions, e.g., creating linked lists. Other APIs allows users to make use of web services over the Internet. The functions exposed by an API may be remotely invoked through use of a supported messaging protocol. For example, an API may support receiving Extensible Markup Language (XML) formatted Simple Object Application Protocol (SOAP) messages over Hypertext Transfer Protocol (HTTP) or HTTP Secure (HTTPS) in order to provide a web service to Internet users. That same service may also be exposed through a different API that instead uses HTTP(S) to exchange messages in JavaScript Object Notation (JSON) format, for example.
The design of an API may be communicated by an API definition (or description). An API definition may take numerous forms. One form of API definition, for example, is documentation that lists the function prototypes of the API, including the parameters used by each function. Another form of API definition, for example, is a document written in an Interface Definition Language (IDL) (sometimes also referred to as an Interface Description Language). One such IDL is Web Services Description Language (WSDL) (formerly known as Web Services Definition Language). WSDL makes use of the XML format, which is a machine-readable format that may allow a computer to read a WSDL document, and learn the interface of a web service programmatically. As shown above in the context of IDLs and WSDL, the terms “definition” and “description” are often used interchangeably by those of ordinary skill in the art. Accordingly, the terms “definition” and “description” as used throughout the present disclosure should similarly be viewed as interchangeable.
New versions of software may be developed that result in changes to an existing API, or add a new API. For example, a new software version may add new functions, modify the parameters required to invoke old functions, and remove outdated functions. A new software version may also, for example, add an API to expose existing software functions as a web-service, or to shift from one messaging approach to another. The complexity of designing a new API that captures aspects of an existing API can vary greatly, depending on the complexity of the existing API (among other factors).